Computer systems are constantly improving in terms of speed, reliability, and processing capability. As a result, computers are able to handle more complex and sophisticated applications. However, as computers improve, performance demands placed on mass storage and input/output (I/O) devices increase. In general, I/O performance has had difficulty keeping pace with the growing capabilities of the computers.
The mass storage industry faces two primary challenges: (1) to improve I/O performance so that data access does not become a limiting factor for an application, and (2) to provide access to on-line data at levels of reliability well in excess of the expected lifetimes of the computer systems that process it. See, The RAIDBook: A Source Book for RAID Technology, published Jun. 9, 1993, by the RAID Advisory Board, Linc Lakes, Minn. It is desirable that storage devices meet these goals in a cost-effective manner.
There are three primary design criteria for mass storage systems: cost, performance, and availability. It is most desirable to produce memory devices that have a low cost per megabyte, a high input/output performance, and high data availability. "Availability" is the ability to access data stored in the storage system and the ability to insure continued operation in the event of some failure. Typically, data availability is provided through the use of redundancy wherein data, or relationships among data, are stored in multiple locations.
There are two common methods of storing redundant data. According to the first or "mirror" method, data is duplicated and stored in two separate areas of the storage system. For example, in a disk array, the identical data is provided on two separate disks in the disk array. The mirror method has the advantages of high performance and high data availability due to the duplex storing technique. However, the mirror method is also relatively expensive as it effectively doubles the cost of storing data.
In the second or "parity" method, a portion of the storage area is used to store redundant data, but the size of the redundant storage area is less than the remaining storage space used to store the original data. For example, in a disk array having five disks, four disks might be used to store data with the fifth disk being dedicated to storing redundant data. The parity method is advantageous because it is less costly than the mirror method, but it also has lower performance and availability characteristics in comparison to the mirror method.
One problem in conventional disk arrays concerns data loss resulting from multiple failures. Conventional disk arrays are designed to maintain high data reliability by allowing for single failures without loss of data. This is achieved by maintaining some level of redundancy in the stored data. Unfortunately, multiple failures in certain combinations can lead to loss of data in all disk arrays. It is therefore desirable to avoid multiple failures in redundant disk array systems.
Another problem is that once data loss has occurred, conventional disk arrays often do not provide for detection of the data loss each time the lost data is read. Even if some detection is provided, the disk arrays tend to report more data loss than actually occurred. For instance, the conventional disk arrays may report data loss on an entire storage disk even though the actual loss may have been restricted to a small subset of the stored data, such as a few sectors on the storage disk. As a result, the otherwise good data on the storage disk is needlessly rendered unavailable to the user.